package com.racetime.dao;

import com.racetime.po.Date;

import java.util.List;

/**
 * @author : Ice'Clean
 * @date : 2021-05-24
 *
 * 日程表操作接口
 */
public interface DateDao {

    /**
     * 通过日程 id 查询日程
     * @param dateId 日程 id
     * @return 对应日程实体
     */
    Date findDateById(int dateId);

    /**
     * 获取指定用户的所有日程
     * @param userId 用户 id
     * @return 属于该用户的所有日程
     */
    List<Date> findDateByUserId(int userId);

    /**
     * 寻找用户日程中日程时间段与指定时间段有重叠的日程
     * @param userId 用户 id
     * @param startTime 指定的起始时间
     * @param endTime 指定的终止时间
     * @return 符合条件的日程
     */
    List<Date> findDateByTimeScope(int userId, String startTime, String endTime);

    /**
     * 获取包含指定时间的日程（即当前需要完成的日程）
     * @param userId 用户 id
     * @param time 指定时间
     * @return 包含指定时间的日程
     */
    Date findDateByTime(int userId, String time);

    /**
     * 创建新日程
     * @param date 新日程对象
     * @return 新日程 id
     */
    int createNewDate(Date date);

    /**
     * 更新日程
     * @param date 已更新的日程
     * @return 是否更新成功
     */
    boolean updateDate(Date date);

    /**
     * 通过日程 id 删除日程
     * @param dateId 日程 id
     * @return 是否删除成功
     */
    boolean deleteDate(int dateId);
}
